package modelo.lugaresYPistas;


import modelo.delictivas.Cuchillazo;
import modelo.delictivas.Disparo;

import org.w3c.dom.Document;
import org.w3c.dom.Element;


public class EstablecimientoEconomico extends Establecimiento {

	public EstablecimientoEconomico(String nombre) {
		super(nombre);
	}
	
	public EstablecimientoEconomico(Pista pistaFacil, Pista pistaMedia,
			Pista pistaDificil) {
		super(pistaFacil, pistaMedia, pistaDificil);
	}

	@Override
	public void obtenerPistaDeRastro(RastroCapital rastroCapital) {
		this.pistaFacil = rastroCapital.getPistaEconomicaFacil();
		this.pistaMedia = rastroCapital.getPistaEconomicaMedia();
		this.pistaDificil = rastroCapital.getPistaEconomicaDificil();
	}

	public Element serializar(Document doc) {
		
		Element elementoEstablecimiento = doc.createElement("EstablecimientoEconomico");
		elementoEstablecimiento.setAttribute("ladronEstaEnEstablecimiento", this.ladronEstaEnEstablecimiento.toString());
		elementoEstablecimiento.setAttribute("nombre", this.getNombre());

		if (this.trampa != null) {
			Element elementoTrampa = doc.createElement("Trampa");
			elementoTrampa.appendChild(this.trampa.serializar(doc));
			elementoEstablecimiento.appendChild(elementoTrampa);
		}
		
		Element elementoPistas = doc.createElement("Pistas");
		elementoEstablecimiento.appendChild(elementoPistas);
			
		if (this.pistaFacil != null && this.pistaDificil != null && this.pistaMedia != null){
			elementoPistas.appendChild(this.pistaFacil.serializar(doc));
			elementoPistas.appendChild(this.pistaMedia.serializar(doc));
			elementoPistas.appendChild(this.pistaDificil.serializar(doc));
		}
		return elementoEstablecimiento;
		
	}

	public static EstablecimientoEconomico hidratar(Element establecimientoSerializado) {

		String nombre = establecimientoSerializado.getAttributeNode("nombre").getNodeValue();
		Element elementoPistas = (Element) establecimientoSerializado.getElementsByTagName("Pistas").item(0);
		EstablecimientoEconomico nuevoEstablecimiento;
		if(elementoPistas.getChildNodes().getLength() == 3){
			Pista pistaFacil = Pista.hidratar(elementoPistas.getChildNodes().item(0));
			Pista pistaMedia = Pista.hidratar(elementoPistas.getChildNodes().item(1));
			Pista pistaDificil = Pista.hidratar(elementoPistas.getChildNodes().item(2));
			nuevoEstablecimiento = new EstablecimientoEconomico(pistaFacil, pistaMedia, pistaDificil);
		}
				
		else {
			nuevoEstablecimiento = new EstablecimientoEconomico(null, null, null);
		}
		if (establecimientoSerializado.getAttributeNode("ladronEstaEnEstablecimiento").getNodeValue().equals("true")){
			
			nuevoEstablecimiento.esconderLadronEnEstablecimiento();
		}	
		if (establecimientoSerializado.getChildNodes().getLength() == 2){
			if (establecimientoSerializado.getElementsByTagName("Trampa").item(0).getFirstChild().getNodeName().equals("Cuchillazo")){
				
				nuevoEstablecimiento.setTrampa( new Cuchillazo() );
			}
			
			if (establecimientoSerializado.getElementsByTagName("Trampa").item(0).getFirstChild().getNodeName().equals("Disparo")){
				
				nuevoEstablecimiento.setTrampa( new Disparo());	
			}
		}
		nuevoEstablecimiento.setNombre(nombre);
		return nuevoEstablecimiento;
		
	}

	private void setNombre(String nombre) {
		this.nombre= nombre;
	}



	

}
